package IOTest.exercise;

import java.io.File;
import java.io.IOException;
import java.util.Scanner;

//扫描指定⽬录，并找到名称中包含指定字符的所有普通⽂件（不包含⽬录），并且后续询问⽤⼾是否
//要删除该⽂件
public class One {
    public static void main(String[] args) throws IOException {
        //1、要扫描的路径
        Scanner  scanner = new Scanner(System.in);
        System.out.println("要扫描的路径：");
        String rootPath = scanner.next();
        //2、指定的字符
        System.out.println("要搜索的文件名关键字：");
        String keyword = scanner.next();
        //3、判断用户输入是否合法
        if(keyword.isEmpty()){
            System.out.println("关键字为空！");
            return;
        }
        File file = new File(rootPath);
        if(!file.isDirectory()){
            //当不是目录的时候说明给的路径错误
            System.out.println("路径有误");
            return;
        }
        //4、查找普通文件
        research(rootPath,keyword);
    }

    private static void research(String rootPath, String keyword) throws IOException {
        File file = new File(rootPath);
        File[] files = file.listFiles();
        if(files == null){
            return;
        }
        for (int i = 0; i < files.length; i++) {
                //判断是否为普通文件
                if(files[i].isFile()){
                    //询问用户是否删除
                    tryDelete(files[i],keyword);
                }else {
                    //是目录（文件夹），递归内部的文件
                    research(files[i].getCanonicalPath(),keyword);
                }
            }
    }
    private static void tryDelete(File file,String keyword) throws IOException {
        //判断文件名是否包含关键字
        if(file.getName().contains(keyword)) {
            System.out.println("找到文件，路径："+file.getCanonicalPath());
            System.out.println("是否删除文件：（y/n）");
            Scanner scanner = new Scanner(System.in);
            String str = scanner.next();
            if(str.equals("y")||str.equals("Y")){
                file.delete();
            }else {
                System.out.println("取消删除");
            }
        }
    }
}
